//================================================================================
//read file,get string
//================================================================================

import java.io.*;
import java.util.*;

public class FileExe{
	private int newstringcount;
	private String[] newstring;
	private int[] function;//4 byte
	private int DBG=0;


	public FileExe(){
		newstring=new String[1];
		function=new int[1];
		newstringcount=0;
		DBG=0;
	}

	//================================================================================
	//DBG & 0x02
	//================================================================================
	/**
	parse file to one line string
	*/
	public void parseString(String orgString,String seperateString,String[] removeString){

/*
System.out.println("0---------------------------");
System.out.println("oldstringlen:"+orgString.length());
for(int n=0;n<orgString.length();n++){
	System.out.print(orgString.charAt(n));
}
System.out.println();
System.out.println("----------------------------");
System.out.println("seperateString:"+seperateString);
System.out.println("----------------------------");
for(int i=0;i<removeString.length;i++){
	System.out.println("removeString:"+removeString[i]);
}
System.out.println("----------------------------");
*/
		newstringcount=0;

		String[] tmpString=orgString.split(seperateString);
		String[] tmpString_1=new String[tmpString.length];

		if(tmpString.length>0){
			

//System.out.println("1---------------------------");
//System.out.println("tmpString.length:"+tmpString.length);
//System.out.println("removeString.length:"+removeString.length);
/*
System.out.println("oldstring_1len:"+oldstring_1.length);
System.out.println("newstring_1len:"+newstring_1.length);
System.out.println("char:");
for(int p=0;p<tmpString.length;p++){
for(int n=0;n<tmpString[p].length();n++){
System.out.print((int)tmpString[p].charAt(n));
}
System.out.println();
}
System.out.println();
*/

			for(int i=0;i<tmpString.length;i++){

				for(int j=0;j<removeString.length;j++){
					while(tmpString[i].indexOf(removeString[j])!=-1){
						tmpString[i]=tmpString[i].replaceFirst(removeString[j],"");
					}
				}
				
				if(!tmpString[i].equals("")){//if not empty string save tmp save
					tmpString_1[newstringcount]=tmpString[i];
					newstringcount++;
				}
/*
System.out.println("2---------------------------:"+newstringcount);
System.out.print("tmpString["+i+"]="+tmpString[i]);
System.out.println("--");
*/
			}
			
			newstring=new String[newstringcount];
			function=new int[newstringcount];
//System.out.println("3---------------------------:"+newstringcount);

			for(int i=0;i<newstringcount;i++){
				newstring[i]=tmpString_1[i];
if((DBG & 0x02)==0x02)
System.out.println("newstring["+i+"]="+newstring[i]);
			}
if((DBG & 0x02)==0x02)
System.out.println("newstring.length="+newstring.length);
		}
	}
	//================================================================================
	//DBG & 0x01
	//================================================================================
	/**
	check each string's function for next use 
	*/
	public int[] parseFunction(String[] orgString,String[] funString){
		int k=1;


		if(orgString.length>0 && funString.length>0){
			for(int i=0;i<orgString.length;i++){
//if((DBG & 0x01)==0x01)
//System.out.println("orgString["+i+"]="+orgString[i]);
				k=1;
				for(int j=0;j<funString.length;j++){
//if((DBG & 0x01)==0x01)
//System.out.println("funString["+j+"]="+funString[j]);
					if(orgString[i]!=null){
						if(orgString[i].indexOf(funString[j])!=-1){
							function[i]|=k;
						}
					}

					if(funString.length>=32)
						k=0;
					else
						k<<=1;
				}
if((DBG & 0x01)==0x01)
System.out.println("function["+i+"]="+function[i]);
			}
		}
		else{
			System.out.println("error:array length=0");	
		}

		return function;
	}
	//================================================================================
	//================================================================================
	public void readString(String srcfile,String seperateString,String[] removeString){

		byte[] bytes=new byte[1];

		File file=new File(srcfile);


		try{
			BufferedInputStream bufferedinputstream=new BufferedInputStream(new FileInputStream(file));
			ByteArrayOutputStream bytearrayoutputstream=new ByteArrayOutputStream();

			while(bufferedinputstream.read(bytes)!=-1){
				bytearrayoutputstream.write(bytes);
			}			
			bytearrayoutputstream.close();
			bufferedinputstream.close();
	
			String allString=bytearrayoutputstream.toString();
			parseString(allString,seperateString,removeString);
		}	
//		catch(ArrayIndexOutOfBoundsException e){
//			e.printStackTrace();
//		}
		catch(IOException e){
			e.printStackTrace();
		}
	}
	//================================================================================
	//================================================================================
	public int getDBG(){
		return DBG;
	}
	//================================================================================
	//================================================================================
	public void setDBG(int dbg){
		DBG=dbg;
	}
	//================================================================================
	//================================================================================
	public String[] getNewString(){
		return newstring;
	}
	//================================================================================
	//================================================================================
	public int[] getFunction(){
		return function;
	}
	//================================================================================
	//================================================================================
	public int getNewStringCount(){
		return newstringcount;
	}
}


